import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

import axios from 'axios';
Vue.prototype.$axios = axios
axios.defaults.headers.post['Content-Type'] = "application/json"
axios.defaults.baseURL = process.env.VUE_APP_BASE_API;


// 请求拦截器 token必须在拦截器中设置, 
axios.interceptors.request.use(config => {
  let token = store.state.token
  token && (config.headers.Token = `${token}`);
  config.headers['Accept-Language'] = localStorage.getItem('currentLang') || 'zh-CN'
  return config;
},
  err => {
    return Promise.reject(err);
  })


// 响应拦截器
axios.interceptors.response.use(response => {
  // response.data.code = 401 // => 测试
  if (response.data.code) {
    if (response.data.code === 401 || response.data.code === 403) {
      Vue.prototype.$message.error({
        message: response.data.msg,
        duration: 1500
      })

      // 删除登录状态
      localStorage.removeItem("ms_username");
      // 清除token
      store.commit('DEL_TOKEN')

      // 线上
      window.location.href = "http://vue.bangning.vip/#/login";
      // 本地
      // window.location.href = 'http://192.168.3.80:8100/#/login';

    } else if (response.data.code === 500) {
      Vue.prototype.$message.error({
        message: response.data.msg || '服务器忙碌, 请稍后尝试',
        duration: 1500
      })
    }
  }
  return response;
},
  // 接口错误状态处理，也就是说无响应时的处理
  error => {
    return Promise.reject(error) // 如果.then() 有第二个失败函数， 则在失败函数的参数中获取, 并且后面.then继续执行 否则会在catch参数中获取到，并且后面.then不再执行
  });

// 适配flex
import '@/common/flexible.js';

// 将自动注册所有组件为全局组件
import dataV from '@jiaminghi/data-view'
Vue.use(dataV)

// 引入echart
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

// 注册icons的index.js：
import '@/svgIcon/index.js';


Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
